// 展示Rust中的for循环、闭包和迭代器链功能
fn main() {
    // 1. for循环遍历（类似Java的for-each）
    let numbers = vec![1, 2, 3, 4, 5];
    println!("=== for循环遍历示例 ===");
    for num in numbers.iter() {
        println!("数字: {}", num);
    }

    // 2. 闭包（类似Java的lambda）
    println!("\n=== 闭包示例 ===");
    // 基本闭包
    let add = |a, b| a + b;
    println!("1 + 2 = {}", add(1, 2));

    // 捕获环境变量的闭包
    let x = 10;
    let multiply = |y| x * y;
    println!("10 * 5 = {}", multiply(5));

    // 3. 迭代器链（类似Java的Stream）
    println!("\n=== 迭代器链示例 ===");
    let numbers = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

    // 过滤偶数并求和
    let even_sum: i32 = numbers
        .iter()
        .filter(|&&n| n % 2 == 0)
        .sum();
    println!("偶数之和: {}", even_sum);

    // 映射并收集结果
    let squared: Vec<i32> = numbers
        .iter()
        .map(|&n| n * n)
        .collect();
    println!("平方后的数字: {:?}", squared);

    // 复杂链式操作
    let result: i32 = numbers
        .iter()
        .filter(|&&n| n % 3 == 0)  // 过滤3的倍数
        .map(|&n| n * 2)           // 乘以2
        .sum();                    // 求和
    println!("3的倍数乘以2之和: {}", result);
}